/*
 *
 * Copywrite MetaShare(r), 2010
 *
 * @author J. Dave Sheremata
 *
 * Overview:
 * Graphy is a research project to create an API and framework to query, view
 * and manipulate heterogenious data as a graph datastructure.
 *
 * Features:
 * Yield data as "normal" as can be - i.e., standard POGOs and collections are
 * returned from APIs with as minimal interference to the user's programming style
 *
 * Aggregate query results with high level abstraction of the underlying datasources.
 *
 * Provide a simple uniform query interface into multiple concurrent datasources with
 * a simple unified query grammar and syntax.
 *
 * Down the road:
 * * a DSL to query Graphs
 * * a command line interpretter to query Graphs using the DSL
 * * "automapping" features on a per SourceGraph implemenation basis
 * * a graphical editor for creating SourceGraph mappings
 *
 *
 */

package net.metashare.grah

import net.metashare.grah.logic.Predicate
import net.metashare.grah.meta.MetaContext

/**
 *
 * @author dsherema
 */
interface Graph {

  //def Node getNode( Predicate p )
  //def Edge getEdge( Predicate tailP, Predicate headP, Boolean directed )
  //def Edge getEdge( Predicate edgePredicate )

  def List nodes(Predicate p)

  def List<Edge> edges(Predicate p)

  def MetaContext context()
}

